package com.youzhi.backend.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.youzhi.backend.dto.LoginResponse;
import com.youzhi.backend.entity.User;
import com.youzhi.backend.request.*;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 雇员表 服务类
 * </p>
 *
 * @author xumeng
 * @since 2022-11-18
 */
public interface IUserService extends IService<User> {

    /**
     * 添加用户
     *
     * @param request
     */
    void addUser(UpdateUserRequest request);

    /**
     * 登陆
     */
    LoginResponse login(LoginRequest request);

    /**
     * 退出登陆
     *
     * @param request
     */
    void logout(LogoutRequest request);


    /**
     * 分页查询用户
     *
     * @param request
     * @return
     */
    IPage<User> userPage(UserPageRequest request);

    /**
     * 更新用户信息
     *
     * @param request
     */
    void updateUser(UpdateUserRequest request);


    /**
     * 更新用户密码
     *
     * @param request
     */
    void modifyPassword(ModifyPasswordRequest request);


    /**
     * 批量删除用户
     *
     * @param userIds
     */
    void deleteUsers(List<Long> userIds);


    /**
     * 根据用户名批量搜索
     *
     * @param name
     */
    List<Map<String, Object>> queryUserName(String name);


    /**
     * 更新用户组织id
     *
     * @param organizationId 组织id
     * @param userId         用户id
     */
    void updateUserOrganizationId(Long organizationId, Long userId);


    /**
     * 删除用户组织id字段
     *
     * @param organizationId
     */
    void removeOrganizationId(Long organizationId);


    /**
     * 移除用户组织部门信息
     *
     * @param id
     */
    void removeUserOrganization(Long id);


    /**
     * 将用户添加近进组织部门
     *
     * @param organizationId
     * @param name
     */
    void addUserOrganization(Long organizationId, String name);

}
